git 是什么
- Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
- Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
- 将本地仓库关联到远程仓库: git remote add origin http://...
- 将本地仓库 push 到远程仓库: git push origin master -f
- 查看日志 git log --oneline graph
git 分支
- git branch dev 创建分支: 操作会将 dev 指针指到和 master 相同的位置, 从而获得和 master 相同的 log
- git merge dev 操作将 dev 分支合并到 master , 如果 master 没有额外提交则为简单合并, 直接将 master 指针指向 dev HEAD
- 如果 master 有额外提交则会新增一个节点进行合并
-
如果出现两个分支修改同一个文件的相同部分发生冲突则需要解决冲突
- git add .
- git commit -m 'resolve confilict'
-
git checkout -b dev 创建并切换到 dev 分支
-
更新master主线上的东西到该分支上:$git rebase master
- 改变当前分支从 master 上拉出分支的位置
- 没有多余的合并历史的记录
- 可能会多次解决同一个地方的冲突
-
冲突解决后先 rebase --continue 然后 add 然后 commit 然后在继续修改代码再然后 add 然后 commit 完成
-
提交:git commit -a
-
对最近一次 commit 的进行修改:git commit -a –amend
-
commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^
-
查看各个分支最后一次提交: $ git branch -v
-
git reset --soft --hard --mixed 的区别
- 使用 --soft 参数将会仅仅重置 HEAD 到制定的版本,不会修改 index 和 working tree
- 使用 --mixed参数与 --sof t的不同之处在于,--mixed 修改了 index,使其与第二个版本匹配。index 中给定 commit 之后的修改被 unstaged
- 使用 --hard 同时也会修改 working tree,也就是当前的工作目录,如果我们执行 git reset --hard HEAD~,那么最后一次提交的修改,包括本地文件的修改都会被清除,彻底还原到上一次提交的状态且无法找回。所以在执行 reset --hard 之前一定要小心
-
git revert
- 使用 git revert 也能起到回退版本的作用,不同之处在于
- git revert <commit> 会回退到 <commit> 之前的那次提交,比如 git revert HEAD~3 会回退到最近的第 4 个提交的状态,而不是第 3 个
- git revert 会产生一个新的 commit,将这次回退作为一次修改记录提交,这样的好处是不修改历史提交记录。
-
放弃最近执行的几次 git 命令导致的改变
- git reflog 查看操作记录 git reset ...ID 回退
git 本地重命名文件夹大小写并提交到远程分支
- 文件夹备份
- git config core.ignorecase false 设置大小写敏感
- cd... 进入到文件夹目录下,我的文件夹名是 Test,执行命令删除:git rm Test
- 将备份文件夹重命名大小写放回原来路径下
- 执行命令添加:git add test
- 查看状态:git status
- add commit 提交 push 推送操作
- git clean -d -fx . 强制本地和服务器内容一致
- -x 意味着忽略的文件以及git未知的文件也将被删除
- -d 表示除未跟踪文件外,还删除未跟踪目录
- -f 需要强制它运行
git 忽略文件不提交的命令
- 忽略: git update-index --assume-unchanged /path/to/file
- 取消忽略: git update-index --no-assume-unchanged /path/to/file
git 查看远程地址以及切换远程地址
- 查看:git remote -v
- 切换:git remote set-url origin 新地址
git 切换账号
- git config --global user.name "userName"
- git config --global user.email "userEmail"
列举远程分支以及最后commit时间并按时间排序
for branch in git branch -r | grep -v HEAD
;do echo -e git show --format="%ci %cr" $branch | head -n 1
\t$branch; done | sort -r
列举本地分支以及最后commit时间并按时间排序
for branch in git branch | grep -v HEAD
;do echo -e git show --format="%ci %cr" $branch | head -n 1
\t$branch; done | sort -r
合并分支强行采用某一分支
- git merge xxx -s ours 采用本身分支
- git merge xxx -s recursive -X theirs 采用传入的分支
- 将分支强行被其他分支覆盖:git reset --hard origin/master 强行被 master 分支替换
网友评论