Linux git使用方法杂记(持续更新...)

 GIT使用

1. git查找某个文件某次修改记录

(1). 首先切换到要查看的文件所在的目录:如:我想查看default_workspace.xml这个文件的某次修改情况,该文件位于~/android/android4.2/dev/Trunk/Android/Android4.2/kernel/drivers/video/rockchip/vga$这个目录中。

cd ~/android/backup/jw42temp/dev/Trunk/Android/Android4.2/device/rockchip/rk30sdk/overlay/packages/apps/Launcher2/res/xml-sw720dp$

(2). git log --pretty=oneline 文件名   显示出这个文件的所有提示记录,--pretty=oneline表示提交信息以一行的形式显示。


(3). git show 哈希值。如我想查看 提示信息为“Launcher修改:1.屏幕页数改为3屏 2.默认第二屏为主页 3.添加桌面常用图标 4.Hotseat修改”的修改情况。

git show dae876432cfbc27765df3bbf947769bb2a79d9ba



2. linux目录中递归删除同名文件夹

    比如,原来使用SVN管理的工程,现在迁移到GIT上面来,原来每个目录下都有.svn文件夹,现在已经不需要了,需要删除,进入源码目录,使用以下命令递归删除.svn文件夹。

find . -name '.svn' -type d | xargs rm -rf

3. 更改服务端GIT地址

git remote set-url origin 服务端git地址

4. push本地新的分支到远程

本地上创建了一个新的分支,如:lzr-branch, 想要push到远程服务器上,但是,怕影响原来的代码,所以远程上同步一个新的分支 

git push original lzr-branch

5. GIT 批量删除文件

git status ./ |awk '{if($2=="deleted:"){print $3}}'|xargs git rm

6. GIT 空白提交

git commit --allow-empty -m "Empty"

7. git status 只显示修改过的文件(状态为modified)

git st | awk '{if ( $2 == "modified:") { print $3}}' 

8. 通常,合并分支时,Git会用Fast forward模式,这种模式下,删除分支后,会丢掉分支信息。如果使用--no-ff 强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。


$ git merge --no-ff -m "merge with no-ff" dev


9. git stash 与 git stash pop的使用

当手头工作没有完成时,先把工作现场git stash一下,然后去创建临时分支修复bug,修复后合并分支并回到原分支上,再git stash pop,回到工作现场。

参考: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137602359178794d966923e5c4134bc8bf98dfb03aea3000


10. 从本地推送分支

git push origin branch-name

如果推送失败,先用git pull抓取远程的新提交


11. 在本地创建和远程分支对应的分支

git checkout -b branch-name origin/branch-name 本地和远程分支的名称最好一致

12. 建立本地分支和远程分支的关联

git branch --set-upstream branch-name origin/branch-name

13. 创建带有说明的标签,用-a指定标签名,-m指定说明文字

$ git tag -a v0.1 -m "version 0.1 released" commit_id

14. 参看文件每行的修改记录

git blame  framework/base/services/core/java/com/android/server/am/ActivityManagerService.java | grep "xxxx"

15. 参看文件历史修改记录
gitk  framework//services/core/java/com/android/server/am/ActivityManagerService.java

16. 查看某次提交修改的文件列表

git log [commit id] --raw

17.  查看log时显示每次提交的内容差异

git log -p

18. 添加远程仓库

git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个你可以轻松引用的简写:

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin	https://github.com/schacon/ticgit (fetch)
origin	https://github.com/schacon/ticgit (push)
pb	https://github.com/paulboone/ticgit (fetch)
pb	https://github.com/paulboone/ticgit (push)

19. 推送标签

(1) 推送单个标签

git push origin [tagname]

(2) 推送多个标签

git push origin tags




多人开发分支流程通常在Git中是这样的: 1. **初始化仓库** (git init): 如果你在新的项目开始时创建一个新的本地仓库,可以使用`git init`命令初始化一个全新的Git仓库。 2. **克隆仓库** (git clone): 当团队成员想要参与到项目中,他们可以从远程仓库(如GitHub、GitLab等)使用`git clone [repository-url]`来克隆整个项目到自己的本地。 3. **切换分支** (git checkout -b): 每位开发者可以在本地创建并切换到自己的分支,比如`git checkout -b feature-branch` 创建并切换到新功能分支。 4. **工作与提交** (git add, git commit): 开发者在修改完代码后,先使用`git add [file-name]`添加改动,然后用`git commit -m "commit message"`提交更改,记下简短的描述说明做了什么更改。 5. **推送至远程分支** (git push origin branch-name): 将本地分支的更新推送到远端共享,让其他团队成员看到。 6. **合并分支** (git merge or rebase): 当某个分支的工作完成并通过审查,主分支或需要该变更的其他分支会从`origin`拉取更新,再用`git merge feature-branch` 或 `git rebase feature-branch` 合并分支。 7. **冲突解决** (git mergetool): 如果有冲突发生,需要手动解决后再提交。 8. **保持同步** (git pull): 定期在本地使用`git pull`获取远程分支的最新变化,避免信息孤岛。 9. **查看状态** (git status): 使用`git status`了解当前目录的状态,包括未跟踪文件、暂存区的改动和已提交的更改。 在协作过程中,频繁地交流和协同处理冲突是很关键的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值