Git常用命令

首先我个人使用git有几个建议:

  一. 是琐碎提交 频繁提交,在一个commit中只作与当前commit相关的事情,多余代码应当属于其他的commit

  这样做的好处是当你的leader去review你写的代码的时候,他在合并一个commit的时候可以清楚的知道你做了什么

 

  二. 尽量避免使用git pull, 这个命令相当于git fetch + git merge, 如果多人在同一个分支

  上开发,那么git pull绝对是噩梦般的命令,因此不要使用git pull

 

  三. 不要使用无意义的分支名称,一个分支名称应当是此分支所完成功能或者是bug_fix,分支名最好不要出现大

  写,使用_链接,不要使用dev这样的分支名。每个功能对应每个分支,而不是开发人员对应分支

 

拉取操作

1. 复制代码库

     git clone https://xxxxxxxxxxxxxxxxxxx.git   https方式

        git clone git@xxxxxxxxxxxxxxxxxxxxx.git   ssh方式需要配置密钥

2. 获取最新代码

   git fetch 拉取远端分支代码到本地,此时本地分支不会自动更新

   git pull   拉取远端分支代码到本地并自动合并本地代码(极不推荐)

   git pull相当于git fetch + git merge这就导致了假如有其他人也在此分支开发时,他的代码会直

   接被合进你的分支,此操作无疑是非常危险的

        git fetch只是将远端的分支拉取到了本地,合不合并由你自己决定,fetch之后可以使用git rebase

   或git merge来合并代码

3. 查看代码提交记录(图形化)

   git log --oneline --graph --all --decorate建议将此命令添加到自己的.bashrc文件中,方便使用

4. 修改远程仓库地址

     git remote remove xxxx 首先移除远程仓库地址xxx为当前分支名

        git remote add origin git@github.com:xxx/xxx.git 加入新的远程地址

提交操作

1. 添加需要提交的文件到暂存区

   git add src/main/xxxxx.java

   git add -a 将所有文件全部提交到暂存区

   git add -i -p xxxxx 这个命令的作用是打开一个类似git diff的界面,使用这个命令你可以将一个文件中不同的改动归属到不同的commit中,方便分化管理

   当一个页面中有多处改动并且各项改动中有明显的界线划分的时候,就可以在git add -i -p xx的情况下选择e来分割代码使用

        推荐使用此命令添加文件

2. 提交到本地版本库

   git commit -m"commit message" git commit主要是将暂存区里的改动给提交到本地的版本库,-m是之后是写入提交信息

3. 推送本地分支到远端

   git push 此命令会将本地的所有commit提交到远端分支

   git push -f 强制更新,用本地分支代码强制更新远端(在没有备份的情况下不可逆,请注意使用时机,慎用

4. 撤销已经commit但未push的代码(保留代码)

   git reset --soft HEAD^  ^代表上一次改动,如果想撤销上一次的改动则使用

   git reset --soft HEAD~1 撤销几次~后就写几次

5. 撤销已经commit但未push的代码(不保留代码,慎重使用!!!!!)

   git reset --hard HEAD^  ^代表上一次改动,如果想撤销上一次的改动则使用

   git reset --hard HEAD~1 撤销几次~后就写几次

5. 修改已经提交的commit message

   git commit --amend 此命令可以修改最近一次提交的commit信息

分支操作

1. 创建新分支

  git branch xxx创建分支

  git checkout -b xxxxx创建新分支xxx(不要求远端存在分支,不会自动设置上游分支)

  git checkout xxx 根据上游分支自动创建

2. 推送新分支到远端

  git push origin xxxx:xxxx

  git push --set-upstream origin xxxxx建立与远端的跟踪

3. 删除分支

  git branch -D xxxx强制删除本地分支

  git push origin --delete xxx删除远端分支

  git remote update origin --prune 刷新本地分支(删除远端后可能本地还会有缓存,可以使用此命令来刷新)

4. 暂时储存分支改动

       git stash save 将此分支的所有改动都储存到stash中,当你需要在开发中临时切换分支时就可以使用这个命令来储存改动

       git stash save -p 与git add -i -p 有着类似的操作,可以更为精细的进行代码储存

5. 查看储存的分支改动

        git stash list 查看当前有多少已储存的stash列表

   git stash show stash@{n} 查看某一个储存的stash改动了那些文件, n就是你stash储存的序号

6. 应用储存的改动

   git stash apply stash@{n} 应用序号n的stash到当前分支,序号为n的stash不会被删除

        git stash pop 应用所有stash到当前分支,在没有冲突的情况下stash会被删除

7. 删除储存的改动

   git stash drop stash@{n} 删除序号为n的stash

8. 删除远端代码但不删除本地代码

  git rm --cached xxxx  删除单个文件

       git rm -r --cached xxxx  删除文件夹

合并操作

1. 合并分支代码

  git merge xxx(xxx为需要合并的分支,当前分支应为待合并分支)

2. 变基分支代码

  git rebase xxx(xxx为需要变基的分支,当前分支应为待变基分支)

  使用此操作大致与merge相同,但是rebase之后留下一条合并记录,这使你的提交历史看起来一清二楚,

  但是此命令存在一定的风险,目前先不讲解(之后补)

3. 变基从一个分支分叉出去的代码

  git rebase --onto master server client

  假设你在matser开发功能,之后切出去一个分支server,在server开发了一段时间后,你又从server上切出一个分支client,

  这时候你的matser需要client上的代码,但是server上的代码又需要开发一段时间,这时候就可以使用此命令

 

     使用此命令后就可以将client上的代码重放到master上,而server代码可以继续开发

打包操作

1. 将某个分支下的代码打包成zip

  git archive master > ~/master.zip

2. 将某个tag下的代码打包成zip

  git archive v0.1 | gzip > v1.0.zip

修改Git者信息

1. 查看当前系统下提交者信息

  git config --global--list

2. 修改提交者信息

  git config --global user.name "xxxxxx"

  git config --global user.email "xxxxxx"

持续更新。。。。。  

posted @ 2019-07-19 10:48  loeyo  阅读(277)  评论(0编辑  收藏  举报