git reflog show --date=iso <branch name> 分支创建时间
#git 如何实现vimdiff
git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool
然后使用 git d 打开对比代码,然后用 :wq 继续比较下一个文件。
git d hashid
MERGING
git reset --hard head
Git 修改comment
Git 是全量,每个版本都包含所有文件
git diff Makefile2 Makefile > make.patch
add,commit,push三步曲;
git add file1
git commit -m "file1"
git push origin master
配置账户:
git config user.email luopandeng@uniontech.com
git config user.name ut002579
git clean -df 想批量删除branch中新加的文件
git fetch --tags -f
日志:
git log --short
git log --oneline --gragh
git log --stat 每次提交的简略统计信息
git log -2 最近两次提交记录
git log -p -2 最近两次修改
git log filename
git log -p filename
git show 6b14b5883e5a03d5e2110eb78633f622e81a36ac 文件路径
git show 6b14b5883e5a03d5e2110eb78633f622e81a36ac
git checkout 文件名 放弃本地修改(未commit)
git show 查看本地commit 内容
git checkout 分支名
git reflog show v8.9.255.24 查看分支从哪个分支拉出来
GIT_TRACE=2
初始化并推送到远端
git init
git add .
git config --global user.email "20733925@qq.com"
git config --global user.name "luopandeng"
--global 给当前用户一次性设置
--system 给所有用户一次性设置
--local 给当前项目一次性设置
git commit -m "chromium-89.0.4389.114 初始化"
git remote add origin https://gitlabcd.uniontech.com/ut002579/chromium-89.0.4389.114-debian-ft2000plus.git
git push -u origin master
git push origin origin/security-devolop:security-devolop
git push origin security-devolop-remain-elfverify-follow_m_master
git merge remotes/origin/security-devolop 更新分支到本地
git config --global --unset http.proxy
git config --global --unset https.proxy
./scripts/checkpatch.pl --ignore FILE_PATH_CHANGES -g HEAD
Signed-off-by: luopandeng
git format-patch bfb49196eb
Git :
modified 已经修改
Staged 已暂存
Commit 已经提交
工作区-》add->暂存区->commit->对象区
Git rm --cached 从暂存区删除,退回工作区
修改一个commit的文件,则该文件回退到工作区
Shift+zz
Ctrl+a
Ctrl+e
Git commit -am "xxx" 合并am操作
Git reset head, 将文件从暂存区还原到工作区
.gitignore
Git rm xx, 文件被放到暂存区, 然后再执行 git commit , 文件才真正删除
直接用rm 命令删除,需要再执行git add, git commit
Git rm xx 后悔:git reset head xxx, 再执行 git checkout -- xx
重命名问题:
Git mv a b,
原理是复制一份,然后删除原来的
利用 git rm 与 rm 的区别是, git rm执行完之后 直接进入暂存区
重写提交说明:
Git commit --amend -m “xx” 重写上次说明,修改最后一条注释
分支
git branch xxxx 创建分支
git branch -d tmp 删除本地分支, (不能删除当前分支,必须切出去)
git branch -D tmp 强制删除
Git checkout xxx 切换分支
git push origin --delete tmp 删除远端分支
分支存在未合并的内容,不能删除
Git checkout -b xxx 创建并切换分支
Git branch -v 看到每个分支最近一次提交
分支合并
Git merge new_branch
在工作区的中的增加 删除 修改,如果我们切换到别的分支,这些修改还在
Head : cat .git/head
Get merge 默认使用fast-forward,两个分支归于一点,merge会丢失分支信息
Git merge --no-off xxx_branch 不使用fast-forward,主动合并的会向前一步,merge不会丢失分支信息,
merge冲突:
两个分支同时修改同一个文件的同一行,
执行git merge ->出现merging->修改冲突->git add->git commit (这个add 是解决冲突,并不是加到暂存区)
如果一方落后,另一方前进一步,则merge的时候使用fast-forward不会冲突
版本回退 穿梭:
Git reset --hard HEAD^ 倒退一步
Git reset --hard HEAD~n 倒退n步
Git reset --hard sha1
后悔回退:
Git reflog,再根据sha1,执行 Git reset --hard sha1
Checkout:
Git checkout xxx_file 放弃工作区
Git reset HEAD file , 把暂存区回退到工作区
版本游离:
Git checkout sha1
Git branch -m branch1 branch2
没有commit ,不能切分支
保存现场:
没有commit ,不能切分支
Git stash, 保存现场,然后再切出分支,切回来的时候需要恢复,
Git stash list 查看保存的list
Git stash pop 恢复之前保存的现场
Tag:
Git tag v1.0 创建tag
Git tag -d v1.0 删除tag
Tag 是针对整个项目的,不正对分支
Git diff: 比较的是区中的文件
如果暂存区不为空,比较暂存区和工作区
比较对象区和工作区: git diff sha1 git diff head
比较暂存区和对象区: git diff --cached sha1
Pull:拉下来,并且合并
Pull = fetch + merge
gitk
Orgin/master 这个是一个只读分支, 保存的是远程的master内容,不要修改这个分支的内容
Git remote show origin
Pull-> 解决冲突-》 Git add-》git commit
Git branch -av
Git checkout -b dev origin/dev 基于origin/dev创建新的分支,和origin/dev关联起来
Git pull origin ccc2:ccc3 把远端ccc2 更新到本地ccc3
Git fetch origin master:refs/remotes/origin/helloworld 将远程master更新到helloworld
Git sibmodule add xxx(地址), pull 命令必须进入到B里面pull 才有
Cherry-pick 每次只能转移一个点
Rebase
rebase冲突,vi…add…commit …git rebase --continue
Git rebase --skip 放弃修改,直接使用别人的,每次只放弃一笔merge
Git rebase --abort 还原之前场景,放弃rebase
multiple bugchecks seen,But most seen as
SYSTEM_THREAD_EXCEPTION_NOT_HANDLED,
Which caused by object double remove, We can not find why the object
double removed,So I add check before the object remove.
gitk --simplify-by-decoration qat_2.0_lin_protected_dev_2210 win_uq_dev branch 之间的关系
gitk --simplify-by-decoration main qat_2.0_win_dev_QAT20-22807-4 之间的关系
在没有进行push之前可以采用如下方法进行commit的撤销
–mixed
git reset HEAD^
不删除工作空间提交的代码,撤销 commit,并且撤销 git add . 操作。
注意:-mixed 为默认参数。git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
git reset --soft HEAD^
不删除工作空间提交的代码,撤销 commit,但不撤销 git add . 操作。
注意:就是说仅仅是撤回提交,修改的代码仍然保留在本地仓库。
–hard
git reset --hard HEAD^
删除工作空间提交的代码,撤销 commit,并且撤销 git add . 操作。op
注意:就是说即撤回后,本地提交的代码也不保留。就等于恢复到了上一次的 commit 状态。
git fetch --all && git reset --hard origin/master && git pull 第一个是:拉取所有更新,不同步:第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件):git reset 指令把HEAD指向master最新
git clean -df //删除当前目录下没有被track过的文件和文件夹