虽然之前一直有用git,但是也只是会一点点的命令,今天在网易云课堂上找了个视频教程学习,感觉还不错。
网址是:
https://study.163.com/course/courseMain.htm?courseId=1003268008&trace_c_p_k2=9da982b04d984438a03bf1a4a2e01898#/courseDetail?tab=1
下面是我学习时的记录,如有错误请多多指正
git init : 初始化本地仓库
git init +路径: 在该路径下初始化本地仓库
git status: 查看工作区状态
git add +文件名: 添加文件到暂存区
git commit -m “xxx”: 从暂存区到本地仓库
git push :从本地仓库到远程仓库
git pull: 从远程仓库下更新
git clone +网址: 从远程仓库下载
git diff: 工作目录和暂存区的差别
git diff HEAD: 工作目录和本地仓库的差别
git diff --cached: 暂存区和本地仓库的差别
git rm –cached +文件名: 从本地仓库中移除
暂存区在.git/index文件下
ll : 查看工作区里的东西
git ls-files -s :暂存区里面有哪些东西
git ls-tree +分支名: 查看commit里面有哪些东西
git cat-file -p +:文件名 :查看暂存区下该文件的内容
git cat-file -p +文件哈希值 :查看暂存区下该文件下的内容
git cat-file -p +分支名:文件名 :查看该分支下该文件的内容
commit 指向一个tree,tree指向多个blob
tree是目录,blob是文件
git存储数据的方式:
git log:查看当前分支以前有哪些提交
git log --oneline :简单查看当前分支以前有哪些提交
git log --oneline --decorate:简单查看当前分支以前有哪些提交和分支
git log --oneline --decorate --graph:用图形化的方式显示,方便查看结构
git log –oneline –all:查看所有的提交
git config alias.logg “log --oneline --all --decorate --graph”:设置默认参数,以后输入git log 就相当于加了这些参数
git commit 不允许空的提交,如果要添加空的提交需要添加参数–allow-empty:
git commit --allow-empty -m ‘xxx’
git branch:查看本地有哪些分支
git branch -a:查看本地和远程分支,其中remote 表示远程分支,origin表示地址(git clone 后面那串东西)
git branch -vv:查看跟踪分支
git branch +名字:新建分支
git branch +名字 +父分支名:在某分支下创建新的分支
git branch –set-upstream debug origin/debug : 把debug分支跟踪到 origin/debug分支上
git checkout +名字:切换分支(做了三件事情,把commit的内容放入工作区和暂存区,更新HEAD的指向)
git checkout -b +名字: 创建且切换分支
cat .git/HEAD:查看现在工作在哪个分支
git checkout . :把暂存区的所有内容覆盖工作区
git checkout --file +文件名:把暂存区的某些文件覆盖工作区
git checkout HEAD . :把HEAD指向的分支的所有文件复制到暂存区和工作区
git checkout HEAD --file +文件名:把HEAD指向的分支的部分文件复制到暂存区和工作区
git stash : 把所有现在的修改放入一个暂时存放的地方,并把工作目录回复到修改前
git stash list : 查看暂存的列表(stash@{0}是最近的一次存储,类似与栈)
git stash show -p statsh@{0}:查看stash的内容
git stash pop : 应用第一个暂存 ,并删除
git stash apply statsh@{0}: 应用暂存 ,但不删除
git stash drop statsh@{0}: 不应用暂存 ,删除
git merge 分支名a:把a分支合并到当前分支
git mergetool :当有冲突的时候使用这个工具解决冲突,但在使用之前要先配置使用哪个工具,详细看课时14
merge的时候会生成*.orig的文件,这是一个备份防止merge错了就找不到原来的,当你merge完的时候可以把这个文件删掉
merge完要commit
git rebase --onto newbase start branch :计算branch和start的差值,然后应用到 newbase上(若在远程分支上不建议用),这个操作效果上和git merge类似,但是git的图的形状不一样。默认如果省略–onto newbase,那么默认 newbase等于 start,如果省略 branch,默认为HEAD
加上-i参数为交互式的rebase
编写.gitignore文件可以让git不管理某些文件
git fetch :从远程分支上同步代码,如果要移动到最新的commit要用git merge,git pull就等于git fetch + git merge
git reset --soft 哈希值(commit的哈希值) :更新本地仓库中分支指向
git reset --mixed 哈希值 :更新本地仓库中分支指向,且更新暂存区.
git reset --hard 哈希值 :更新本地仓库中分支指向,且更新暂存区和工作区
git reset 哈希值 :默认是mixed选项
git reset 哈希值 – [.|filename] :用该commit重置暂存区
当commit说明写错的时候可以这么做:
git reset --soft master^: master^表示master的父节点
然后再重新commit
也可以直接使用 git commit –amend -m ’xxx’直接进行修改
看到了一个博客说写错了–hard的情况下怎么恢复
https://www.cnblogs.com/hope-markup/p/6683522.html
git cherry-pick 哈希值:把commit的修改应用到当前分支中
git revert 哈希值:撤销这个commit