当前位置:   article > 正文

Git常用命令和学习笔记

Git常用命令和学习笔记

自己总结的Git常用命令

刚入公司,任职 Java Web开发工程师。
之前也是收藏过其他人写的博客,尝试着自己写一写,养成写博客的习惯,就当是做笔记吧。

加粗为常用的命令

  1. 克隆项目
    git clone "XXX.git"
  2. 列出本地分支
    git branch
  3. 列出本地分支和远程分支(所有分支)
    git branch -a
  4. 会在本地新建一个同名分支,并与该远程分支关联
    git checkout (分支名)
  5. git fetch会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作。
    git fetch
  6. git pull是从远程获取最新版本并merge到本地,会自动合并或修改当前的工作。
    git pull
  7. 用于比较两次修改的差异
    git diff
  8. 合并分支
    git merge --no-ff origin/分支
  9. 查看文件,文件夹在工作区,暂存区的状态
    git status
  10. 添加 提交
    git add 修改文件
    git commit -m 注释内容 (注释可以通过单引号来换行)
    git push origin HEAD:refs/for/分支
  11. 配置指令
  • 查看系统config
    git config --system --list
  • 查看当前用户(global)配置
    git config --global --list
  • 查看当前仓库配置信息
    git config --local --list
  1. 合并多个commit为一个完整的commit
    git rebase -i
  2. 新建分支
    git branch 分支名
  3. 创建并且切换到分支里
    git checkout -b 分支名
  4. 撤销 commit
    执行 commit 后,还没执行 push 时,想要撤销这次的 commit ,该怎么办?
    (add commit push后想要撤销,使用 git reset --soft HEAD^)

使用命令:
git reset --soft HEAD^
这样就成功撤销了 commit,如果想要连着 add 也撤销的话, --soft 改为 --hard(删除工作空间的改动代码)。
注:
HEAD^ 表示上一个版本,即上一次的 commit,也可以写成HEAD~1
如果进行两次的 commit,想要都撤回,可以使用HEAD~2

--soft
  • 1

不删除工作空间的改动代码 ,撤销 commit,不撤销 git add file

--hard
  • 1

删除工作空间的改动代码,撤销 commit 且撤销 add

  1. 修改commit注释,使用一次新的commit,替代上一次提交
    git commit --amend
  2. 合并 hotfix/201201_v2.1.8_v2.1.9 分支代码到 develop 和 master
    git pull
    git checkout develop
    git pull
    git merge --no-ff origin/hotfix/201201_v2.1.8_v2.1.9
    git commit --amend
    git push origin HEAD:refs/for/develop
    git pull
    git checkout master
    git pull
    git merge --no-ff origin/hotfix/201201_v2.1.8_v2.1.9
    git commit --amend
    git push origin HEAD:refs/for/master
  3. 强制覆盖本地代码(与git远程仓库保持一致)
    git fetch --all
    git reset --hard origin/master
    git pull
    第一个是:拉取所有更新,不同步;
    第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);
    第三个是:再更新一次(其实也可以不用,第二步命令做过了其实)
  4. 查看配置
  • git config -l
    当前项目下的配置清单
  • git config --system --list
    系统配置
  • git config --global --list
    查看当前用户(global)配置
  1. 只切换分支,不改变之前的修改
  • 在a分支下执行
    git stash save “save message”
  • 切换到b分支
    git checkout b
  • 在b分支下执行以下命令,以便查看刚刚存在stash里的存储
    git stash list
  • 应用stash里的存储,默认第一个,也可以选择
    git stash pop 或 git stash apply stash@{0}
    注:git stash pop的作用是将git stash栈中最后一个版本取出来。git stash list可以看到所有的版本信息,git stash apply stash@{0}的作用是可以指定栈中的一个版本

Git学习笔记

git大全
https://www.cnblogs.com/syp172654682/p/7689328.html
https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ

1. git add 后撤回

  • 只从暂存区中删除,保留物理文件
    git rm --cached <文件名>

  • 不但从stage中删除,同时强制删除物理文件
    git rm -f <文件名>

  • 把 a.txt 改名为 b.txt
    git mv a.txt b.txt

  • 使用"git add"把更新提交到了暂存区。这时"git status"的输出中提示我们可以通过"git reset HEAD <文件名>…"把暂存区的更新移出到WorkSpace中
    git reset HEAD <文件名> (同第一个)

2. git diff

git diff用于显示WorkSpace中的文件和暂存区文件的差异
用"git status"只能查看对哪些文件做了改动,如果要看改动了什么,可以用:

  • 查看文件修改后的差异
    git diff [files]
  • 比较暂存区的文件与之前已经提交过的文件
    git diff --cached
  • 比较repo与工作空间中的文件差异
    git diff HEAD~n

3. git checkout

  • 检出branch分支。要完成图中的三个步骤,更新HEAD以指向branch分支,以及用branch 指向的树更新暂存区和工作区。
    $ git checkout branch

  • 汇总显示工作区、暂存区与HEAD的差异。
    $ git checkout
    $ git checkout HEAD

  • 用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
    $ git checkout --filename

  • 维持HEAD的指向不变。用 branch 所指向的提交中的 filename 替换暂存区和工作区中相应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。
    $ git checkout branch --filename

  • 注意git checkout 命令后的参数为一个点(“.”)。这条命令最危险!会取消所有本地的 #修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认的机会!
    $ git checkout --. 或写作 git checkout

  • 如果不加commit_id,那么git checkout --file_name 表示恢复文件到本地版本库中最新的状态。
    $ git checkout commit_id --file_name

4. .gitignore 忽略文件

#为注释
*.txt #忽略所有 .txt结尾的文件
!lib.txt #但 lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

5. git commit 提交

  • 提交暂存区到仓库区
    $ git commit -m [message]

  • 提交暂存区的指定文件到仓库区
    $ git commit [file1] [file2] … -m [message]

  • 提交工作区自上次commit之后的变化,直接到仓库区,跳过了add,对新文件无效
    $ git commit -a

  • 提交时显示所有diff信息
    $ git commit -v

  • 使用一次新的commit,替代上一次提交

  • 如果代码没有任何新变化,则用来改写上一次commit的提交信息
    $ git commit --amend -m [message]

  • 重做上一次commit,并包括指定文件的新变化
    $ git commit --amend [file1] [file2] …

  • 修订提交
    如果我们提交过后发现有个文件改错了,或者只是想修改提交说明,这时可以对相应文件做出修改,将修改过的文件通过"git add"添加到暂存区,然后执行以下命令:
    git commit --amend

  • 撤销上一次的提交
    原理就是放弃工作区和index的改动,同时HEAD指针指向前一个commit对象
    git reset --hard HEAD~1(见上面15)
    git reset --soft HEAD^
    git reset --hard <commit_id>
    如果现在又想恢复被撤销的提交可用"git reflog"查看仓库中所有的分支的所有更新记录,包括已经撤销的更新,撤销方法与前面一样。

6. rm 删除文件

  • 删除未跟踪文件
    如果文件还是未跟踪状态,直接删除文件就可了,bash中使用rm可以删除文件
  • 删除已提交文件
    在这里插入图片描述-f 强制删除,物理删除了,同时删除工作区和暂存区中的文件

7. git分支中常用指令

  • 列出所有本地分支
    $ git branch

  • 列出所有远程分支
    $ git branch -r

  • 列出所有本地分支和远程分支
    $ git branch -a

  • 新建一个分支,但依然停留在当前分支
    $ git branch [branch-name]

  • 新建一个分支,并切换到该分支
    $ git checkout -b [branch]
    $ git switch -c [branch]

  • 新建一个分支,指向指定commit
    $ git branch [branch] [commit]

  • 新建一个分支,与指定的远程分支建立追踪关系
    $ git branch --track [branch] [remote-branch]

  • 切换到指定分支,并更新工作区
    $ git checkout [branch-name]
    $ git switch [branch-name]

  • 切换到上一个分支
    $ git checkout -

  • 建立追踪关系,在现有分支与指定的远程分支之间
    $ git branch --set-upstream [branch] [remote-branch]

  • 合并指定分支到当前分支
    $ git merge [branch]

  • 选择一个commit,合并进当前分支
    $ git cherry-pick [commit]

  • 删除分支
    $ git branch -d [branch-name]

  • 删除远程分支
    $ git push origin --delete [branch-name]
    $ git branch -dr [remote/branch]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/290201
推荐阅读
  

闽ICP备14008679号