Using Git in the Real Life for Beginners 6
At the early of a project, we tend to push lots of commit messages, but it would become difficult to maintain in the future.
7.Make the commit history more clean
My commit history just like net
rebase is like this
rebase enable you have a clear, line commit history
- rebase object : which branch you wannt change the history, checkout to this branch
- choose the base
git checkout develop
git rebase master
- branch commit SHA1 value changed, and move behind master
git rebase -i HEAD^^^
pick Commands: p, r, e, s, f, x, d
return the third commit
git rebase -continue^^^
When I finish a project, sometimes, the commits are meanless, it’s better to combine some commit
before : C1
<– C2
<– C3
<–C4
after: C1
<– C5
<– C6
reword
fixup
- combine C2, C3, C4, use HEAD^^^
- C2 combine C3 into C5,
fixup
orsquash
- C5 don’t need save C3, so C3 use
fixup
- C5 commit message is differ from C2 and C3, so C2 need change, use
reword
- C4 commit message need fix, use
reword
git rebase -i HEAD^^^
reword 4572587
fixup 23erx90
reword 23bb4563
reword
allow you to fix like commit message..
the only rule: once you push your branch to remote, or someone have your branch on his project, then you cannot rebase that branch
git gc
git gc it can compress the files, use if often.
工作区暂存区
#当执行如下命令时,会直接从暂存区删除文件,工作区则不做出改变
git rm --cached <file>
#相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
git checkout -- filename
#注意会将暂存区和工作区中的filename文件直接覆盖。
git checkout branch -- filename
push 错误:
git reflog
# 找到最近的版本,0是最近的,
git reset --hard HEAD{7}
git push origin BeanDefinition-BeanDefinitionRegistry --force
# 要提交,加--force才可以
git rm –cached file-name 从add加入暂存区回来 分支管理策略: git merge –no-ff other 禁用Fast forward模式,因为使用Fast forward模式,删除分支后,分支历史信息会丢失。
删除远程分支
$ git push origin –delete [branch-name] $ git branch -dr origin/branch-name
新建一个分支,与指定的远程分支建立追踪关系
$ git branch –track [branch] [remote-name]
新建一个分支,不成功是因为没有fetch
git fetch origin git checkout -b b2 origin/b1 // base b1 branch get a new b2 branch
新建一个分支,指向指定commit使用命令:
git log // commit xxxxxxxxxx // author: xxxxx $ git branch [branch] [commit]
绑定存放源文件的远程仓库
git remote add origin git@github.com:username/
$ usage: git remote add [
`
git tag
操作标签
git tag -d v1.0
# 删除标签。因为创建的标签都只存储在本地,不会自动推送到远程。
#所以,打错的标签可以在本地安全删除。
git push origin
# 推送某个标签到远程
git push origin --tags
# 一次性推送全部尚未推送到远程的本地标签
# 如果标签推送到远程。
git tag -d v1.0
# 先删除本地标签v1.0。
git push origin :refs/tags/v1.0
# 删除远程标签v1.0
gitignore
# 忽略所有的 .a 文件
*.a
# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目录下名为 build 的文件夹
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
#忽略 doc/ 目录及其所有子目录下的 .pdf 文件
doc/**/*.pdf
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。 正如你所看到的,这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。
git log 有许多选项可以帮助你搜寻你所要找的提交, 下面我们会介绍几个最常用的选项。
其中一个比较有用的选项是 -p 或 –patch ,它会显示每次提交所引入的差异(按 补丁 的格式输出)。 你也可以限制显示的日志条目数量,例如使用 -2 选项来只显示最近的两次提交: