工作中常用的Git命令整理

背景

码农10年,git命令还是经常使用的,这里整理下常用的git命令,用于新人上手。

常用git命令一览:

  1. 从远端拉一个分支:
git checkout -b accuse origin/accuse
git push origin HEAD -u 【将新建分支推送到远端服务器】
  1. 从当前分支拉一个分支:
git checkout -b accuse
  1. 创建分支
  git checkout -b new_branch  
     注意,new_branch的代码来自于当前分支
  1. 切换分支
 git checkout another_bra
  和创建分支就差-b参数

5.合并本地分支

 git merge b  
 假设当前分支为dev,上面的命令就是将本地的b分支代码合并到当前分支dev中

6.合并远程分支,和前面的几乎一样,这个比较常用,适合直接合并,不需要再拉一下远端分支。

  git merge origin/b  
 远程分支b被合并到本地当前分支dev中了。

7.git pull / push 使用法

  git pull --rebase【 用 rebase 尽量减少多余的 merge commit】
    rebase 冲突了, 又不喜欢一步一步的 git rebase 怎么办?
    git rebase  --abort  放弃本次的git pull --rebase
    git reset --hard HEAD  自从最近的一次提交以来在working directory中的任何改变都被丢弃,并把HEAD指向最近的一次提交
    git pull 
    git status

 git push 使用方法:
   git push [远程仓库名] [分支名]
  例如:git push origin master

8.Git Stash使用方法:用于分支切换时,保存暂时的修改, git神器之一

  git stash: 
       备份当前的工作区的内容,从最近的一次提交中读取相关内容,
       让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
  git stash pop: 
       从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。
       由于可能存在多个Stash的内容,所以用栈来管理,
       pop会从最近的一个stash中读取内容并恢复。

   git stash list: 
        显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
        使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来

    git stash clear: 
         清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。

8.删除本地分支,

       git checkout b  
        git branch -D a
  首先切换到别的分支,然后才能删除某个分支

9.删除远程分支

   git push origin --delete branch_name 
   或者 
   git push origin :branch_name   例如:  git push origin :feature/log_repair

10.撤销对一个文件的修改【该文件尚未提交】

  git checkout -- filepath/filename
    撤销对所有文件的修改 git chenkout .

11.查看提交日志

   git  log
  1. 撤销commit的提交,放弃所有改动,不小心合并冲突出错啦,撤销Merge操作,都可以用此命令
   git reset --hard HEAD^ 【--hard 表示放弃所有本地改动】
   【HEAD是指向最新的提交,上一次提交是HEAD^,上上次是HEAD^^,也可以写成HEAD~2 ,依次类推】
    会清空工作区所有的文件修改,慎重使用!!
   
   注:回退到指定的版本 git reset --hard <哈希值>

13.撤销commit的提交,保存已有改动【建议使用】

  git reset --soft HEAD^
 index和working directory中的内容不作任何改变,仅仅把HEAD指向要变更的版本。
   这个模式的效果是,执行完毕后,自从<commit>提交的版本以来的所有改变都会显示在git status的"Changes to be committed"中。 

14.恢复 git reset -hard 的误操作

git reflog
   git  reset --hard  版本号
 注意:虽然可以恢复至提交版本所在位置,但是,未提交的、暂存区,工作目录,都消失了

15.新建仓库【将本地初始化的工程推到远端的仓库】

cd 工作目录
git init
git remote add [name] [url]
//例子: git remote add origin【远端仓库别名一般为origin】 [email protected]:flightqmd/flight_sync_data.git 【远端仓库地址】
git add .
git ci -am "初始化"
git push origin HEAD -u

16.在项目根目录下添加.gitignore,这样不会什么文件都提交上去

开始行,结束行 不需要任何标记
<=====//不需要
# maven ignore
target/
# eclipse ignore
.settings/
.project
.classpath
# idea ignore
.idea/
*.ipr
*.iml
*.iws
# temp ignore
*.log
*.cache
*.diff
*.patch
*.tmp
# system ignore
.DS_Store
Thumbs.db
# package ignore (optional)
# *.jar
# *.war
# *.zip
# *.tar
# *.tar.gz

#maven project
catalina.base_IS_UNDEFINED/
*.orig
=====>//不需要

17.显示本地分支和服务器分支的映射关系 ,可以查看分支是否有远端分支映射

   git branch -vv

18…建立本地分支和服务器分支的映射关系

 git branch  --set-upstream-to=origin/<远端branch_name> <本地branch_name>
     输出结果:Branch h5_dev set up to track remote branch h5_dev from origin.  
  git branch --set-upstream-to=origin/feature/zero_coupon_0814 feature/zero_coupon_0814 

18.将远端分支拉到本地,并建立关联关系track:

   git checkout --track origin/jiangbo_dev

19.远程分支的删除与同步:

  删除命令:
          git push origin :branch_name  或者 git push origin --delete branch_name

20.重新定义分支 基准 线:

  git rebase -i master
 例子 : git:(feature/log_repair)  git rebase -i master
        当前分支为 feature/log_repair ,将分支的基线 设置为当前master 位置。
 解释:假设 feature/log_repair 分支是在 2017-06-01 从master 拉的分支 ,一直没有merge过master
            假设 2017年7月1日,执行git rebase -i master ,那么这个命令会自动merge master 这一个月的修改,并把基线设置为 当前master 的提交节点。[当然,这个命令会产生冲突]
注意:使用完该命令,会使本地分支跟远端分支,不一样,删除远端分支,将新分支推向远端

21.删除不存在对应远程分支的本地分支

  git remote show origin  查看远程分枝状态:
  执行  git remote prune origin 或者 git fetch -p 删除远程不存在的远程跟踪分支

22:删除远端合过master的分支

git branch -r --merged master | grep -vE 'HEAD|master|staging|qa|dev' | awk -F'origin/' '{print $2}' | xargs -I {} git push origin :{}  

23:删除本地合过master的分支

git branch --merged master | grep -vE 'HEAD|master|staging|qa|dev' | xargs git branch -d 
-d : 如果没有合并过master 会提醒
-D: 不提醒 直接删除

后续会持续补充好玩儿的命令~
待续…

猜你喜欢

转载自blog.csdn.net/baoxue2008/article/details/106957496