Git 客æ·ç«¯ä¸è½½ï¼Windowsï¼
TortoiseGit 客æ·ç«¯ä¸è½½ï¼Windowsï¼
Sourcetree 客æ·ç«¯ä¸è½½ï¼WindowsãMacï¼
Git Extensions 客æ·ç«¯ä¸è½½ï¼WindowsãMacãLinuxï¼
SmartGit 客æ·ç«¯ä¸è½½ï¼WindowsãMacãLinuxï¼
GitEye 客æ·ç«¯ä¸è½½ ï¼WindowsãMacãLinuxï¼
gitg 客æ·ç«¯ä¸è½½ï¼WindowsãLinuxï¼
ungit 客æ·ç«¯ä¸è½½ï¼WindowsãMacãLinuxï¼
git-cola 客æ·ç«¯ä¸è½½ï¼WindowsãMacãLinuxï¼
Tower 客æ·ç«¯ä¸è½½ï¼WindowsãMacï¼
Gitbox 客æ·ç«¯ä¸è½½ï¼Macï¼
GitUp 客æ·ç«¯ä¸è½½ï¼Macï¼
giggle 客æ·ç«¯ä¸è½½ï¼Linuxï¼
Pocket Git 客æ·ç«¯ä¸è½½ï¼Andoridï¼
Working Copy 客æ·ç«¯ä¸è½½ï¼IOSï¼
Git2Go 客æ·ç«¯ä¸è½½ï¼IOSï¼
GitDrive 客æ·ç«¯ä¸è½½ï¼IOSï¼
Fork 客æ·ç«¯ï¼WindowsãMacï¼
GitKraken 客æ·ç«¯ï¼WindowsãMacãLinuxï¼
EclipseãMyeclipse æ件ä¸è½½
Git æµè§å¨æ件ä¸è½½ï¼ChromeãFirefoxãSafariãOperaï¼æ¯æç äºåGithubï¼
Octotree æµè§å¨æ件ä¸è½½ï¼Chromeï¼æ¯æGithubï¼
GitLab-TreeView æµè§å¨æ件ä¸è½½ï¼Chromeï¼æ¯æGitLabï¼
å客å | æ·±å ¥æµ åºGitæç¨
# å¨å½åç®å½æ°å»ºä¸ä¸ªGit代ç åº
$ git init
# æ°å»ºä¸ä¸ªç®å½ï¼å°å
¶åå§å为Git代ç åº
$ git init [project-name]
# ä¸è½½ä¸ä¸ªé¡¹ç®åå®çæ´ä¸ªä»£ç åå²
$ git clone [url]
# æ¾ç¤ºå½åçGité
ç½®
$ git config --list
# ç¼è¾Gité
ç½®æ件
$ git config -e [--global]
# 设置æ交代ç æ¶çç¨æ·ä¿¡æ¯
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
# æ·»å æå®æ件å°æååº
$ git add [file1] [file2] ...
# æ·»å æå®ç®å½å°æååºï¼å
æ¬åç®å½
$ git add [dir]
# æ·»å å½åç®å½çæææ件å°æååº
$ git add .
# æ·»å æ¯ä¸ªåååï¼é½ä¼è¦æ±ç¡®è®¤
# 对äºåä¸ä¸ªæ件çå¤å¤ååï¼å¯ä»¥å®ç°å次æ交
$ git add -p
# å é¤å·¥ä½åºæ件ï¼å¹¶ä¸å°è¿æ¬¡å é¤æ¾å
¥æååº
$ git rm [file1] [file2] ...
# åæ¢è¿½è¸ªæå®æ件ï¼ä½è¯¥æ件ä¼ä¿çå¨å·¥ä½åº
$ git rm --cached [file]
# æ¹åæ件ï¼å¹¶ä¸å°è¿ä¸ªæ¹åæ¾å
¥æååº
$ git mv [file-original] [file-renamed]
# æ交æååºå°ä»åºåº
$ git commit -m [message]
# æ交æååºçæå®æ件å°ä»åºåº
$ git commit [file1] [file2] ... -m [message]
# æ交工ä½åºèªä¸æ¬¡commitä¹åçååï¼ç´æ¥å°ä»åºåº
$ git commit -a
# æ交æ¶æ¾ç¤ºæædiffä¿¡æ¯
$ git commit -v
# 使ç¨ä¸æ¬¡æ°çcommitï¼æ¿ä»£ä¸ä¸æ¬¡æ交
# å¦æ代ç 没æä»»ä½æ°ååï¼åç¨æ¥æ¹åä¸ä¸æ¬¡commitçæ交信æ¯
$ git commit --amend -m [message]
# éåä¸ä¸æ¬¡commitï¼å¹¶å
æ¬æå®æ件çæ°åå
$ git commit --amend [file1] [file2] ...
# ååºæææ¬å°åæ¯
$ git branch
# ååºææè¿ç¨åæ¯
$ git branch -r
# ååºæææ¬å°åæ¯åè¿ç¨åæ¯
$ git branch -a
# æ°å»ºä¸ä¸ªåæ¯ï¼ä½ä¾ç¶åçå¨å½ååæ¯
$ git branch [branch-name]
# æ°å»ºä¸ä¸ªåæ¯ï¼å¹¶åæ¢å°è¯¥åæ¯
$ git checkout -b [branch]
# æ°å»ºä¸ä¸ªåæ¯ï¼æåæå®commit
$ git branch [branch] [commit]
# æ°å»ºä¸ä¸ªåæ¯ï¼ä¸æå®çè¿ç¨åæ¯å»ºç«è¿½è¸ªå
³ç³»
$ git branch --track [branch] [remote-branch]
# åæ¢å°æå®åæ¯ï¼å¹¶æ´æ°å·¥ä½åº
$ git checkout [branch-name]
# åæ¢å°ä¸ä¸ä¸ªåæ¯
$ git checkout -
# 建ç«è¿½è¸ªå
³ç³»ï¼å¨ç°æåæ¯ä¸æå®çè¿ç¨åæ¯ä¹é´
$ git branch --set-upstream [branch] [remote-branch]
# å并æå®åæ¯å°å½ååæ¯
$ git merge [branch]
# éæ©ä¸ä¸ªcommitï¼å并è¿å½ååæ¯
$ git cherry-pick [commit]
# å é¤åæ¯
$ git branch -d [branch-name]
# å é¤è¿ç¨åæ¯
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
# ååºæætag
$ git tag
# æ°å»ºä¸ä¸ªtagå¨å½åcommit
$ git tag [tag]
# æ°å»ºä¸ä¸ªtagå¨æå®commit
$ git tag [tag] [commit]
# å é¤æ¬å°tag
$ git tag -d [tag]
# å é¤è¿ç¨tag
$ git push origin :refs/tags/[tagName]
# æ¥çtagä¿¡æ¯
$ git show [tag]
# æ交æå®tag
$ git push [remote] [tag]
# æ交æætag
$ git push [remote] --tags
# æ°å»ºä¸ä¸ªåæ¯ï¼æåæ个tag
$ git checkout -b [branch] [tag]
# æ¾ç¤ºæåæ´çæ件
$ git status
# æ¾ç¤ºå½ååæ¯ççæ¬åå²
$ git log
# æ¾ç¤ºcommitåå²ï¼ä»¥åæ¯æ¬¡commitåçåæ´çæ件
$ git log --stat
# æç´¢æ交åå²ï¼æ ¹æ®å
³é®è¯
$ git log -S [keyword]
# æ¾ç¤ºæ个commitä¹åçææåå¨ï¼æ¯ä¸ªcommitå æ®ä¸è¡
$ git log [tag] HEAD --pretty=format:%s
# æ¾ç¤ºæ个commitä¹åçææåå¨ï¼å
¶"æ交说æ"å¿
须符åæç´¢æ¡ä»¶
$ git log [tag] HEAD --grep feature
# æ¾ç¤ºæ个æ件ççæ¬åå²ï¼å
æ¬æ件æ¹å
$ git log --follow [file]
$ git whatchanged [file]
# æ¾ç¤ºæå®æ件ç¸å
³çæ¯ä¸æ¬¡diff
$ git log -p [file]
# æ¾ç¤ºè¿å»5次æ交
$ git log -5 --pretty --oneline
# æ¾ç¤ºæææ交è¿çç¨æ·ï¼ææ交次æ°æåº
$ git shortlog -sn
# æ¾ç¤ºæå®æ件æ¯ä»ä¹äººå¨ä»ä¹æ¶é´ä¿®æ¹è¿
$ git blame [file]
# æ¾ç¤ºæååºåå·¥ä½åºçå·®å¼
$ git diff
# æ¾ç¤ºæååºåä¸ä¸ä¸ªcommitçå·®å¼
$ git diff --cached [file]
# æ¾ç¤ºå·¥ä½åºä¸å½ååæ¯ææ°commitä¹é´çå·®å¼
$ git diff HEAD
# æ¾ç¤ºä¸¤æ¬¡æ交ä¹é´çå·®å¼
$ git diff [first-branch]...[second-branch]
# æ¾ç¤ºä»å¤©ä½ åäºå¤å°è¡ä»£ç
$ git diff --shortstat "@{0 day ago}"
# æ¾ç¤ºæ次æ交çå
æ°æ®åå
容åå
$ git show [commit]
# æ¾ç¤ºæ次æ交åçååçæ件
$ git show --name-only [commit]
# æ¾ç¤ºæ次æ交æ¶ï¼æ个æ件çå
容
$ git show [commit]:[filename]
# æ¾ç¤ºå½ååæ¯çæè¿å 次æ交
$ git reflog
# ä¸è½½è¿ç¨ä»åºçææåå¨
$ git fetch [remote]
# æ¾ç¤ºææè¿ç¨ä»åº
$ git remote -v
# æ¾ç¤ºæ个è¿ç¨ä»åºçä¿¡æ¯
$ git remote show [remote]
# å¢å ä¸ä¸ªæ°çè¿ç¨ä»åºï¼å¹¶å½å
$ git remote add [shortname] [url]
# ååè¿ç¨ä»åºçååï¼å¹¶ä¸æ¬å°åæ¯å并
$ git pull [remote] [branch]
# ä¸ä¼ æ¬å°æå®åæ¯å°è¿ç¨ä»åº
$ git push [remote] [branch]
# 强è¡æ¨éå½ååæ¯å°è¿ç¨ä»åºï¼å³ä½¿æå²çª
$ git push [remote] --force
# æ¨éææåæ¯å°è¿ç¨ä»åº
$ git push [remote] --all
# æ¢å¤æååºçæå®æ件å°å·¥ä½åº
$ git checkout [file]
# æ¢å¤æ个commitçæå®æ件å°æååºåå·¥ä½åº
$ git checkout [commit] [file]
# æ¢å¤æååºçæææ件å°å·¥ä½åº
$ git checkout .
# éç½®æååºçæå®æ件ï¼ä¸ä¸ä¸æ¬¡commitä¿æä¸è´ï¼ä½å·¥ä½åºä¸å
$ git reset [file]
# éç½®æååºä¸å·¥ä½åºï¼ä¸ä¸ä¸æ¬¡commitä¿æä¸è´
$ git reset --hard
# éç½®å½ååæ¯çæé为æå®commitï¼åæ¶éç½®æååºï¼ä½å·¥ä½åºä¸å
$ git reset [commit]
# éç½®å½ååæ¯çHEAD为æå®commitï¼åæ¶éç½®æååºåå·¥ä½åºï¼ä¸æå®commitä¸è´
$ git reset --hard [commit]
# éç½®å½åHEAD为æå®commitï¼ä½ä¿ææååºåå·¥ä½åºä¸å
$ git reset --keep [commit]
# æ°å»ºä¸ä¸ªcommitï¼ç¨æ¥æ¤éæå®commit
# åè
çææååé½å°è¢«åè
æµæ¶ï¼å¹¶ä¸åºç¨å°å½ååæ¯
$ git revert [commit]
ææ¶å°æªæ交çåå移é¤ï¼ç¨åå移å
¥
$ git stash
$ git stash pop
# çæä¸ä¸ªå¯ä¾åå¸çå缩å
$ git archive
以ä¸å¸¸ç¨å½ä»¤æ¥èªé®ä¸å³°èå¸çå客æç« ãå¸¸ç¨ Git å½ä»¤æ¸ åãï¼æè°¢é®èå¸ï¼