SVN是集中式版本控制系統,版本庫是集中放在中央服務器的。Git是分布式版本控制系統,沒有中央服務器。
git remote add origin git@github.com:HowellHu/learn_git.git 把一個已有的本地倉庫與GitHub關聯
分布式版本系統的最大好處之一是在本地工作完全不需要考慮遠程庫的存在,也就是有沒有聯網都可以正常工作,而SVN在沒有聯網的時候是拒絕干活的!當有網絡的時候,再把本地提交推送一下就完成了同步。
fork是將別人的項目拷貝到自己目錄下,并為此建立一個倉庫
https://blog.csdn.net/Mr_JavaScript/article/details/83787333
https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93
git init 產生.git文件夾,記錄所有的變更
git add加入到暫存區,git add .是將所有的都加入到暫存區
git checkout -- <file> 會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。
git commit -m "(描述語)" 提交到倉庫
git log查看提交記錄
如果已經git add某個文件,又想把它撤回,不commit,則需要get reset (文件名)
文件有四種狀態:untracked,unmodified,modified,staged。
git reset (commit id)回滾到某個狀態 (將倉庫文件替換暫存區的文件),checkout表示用暫存區全部或指定的文件替換工作區的文件
或者git reset HEAD~n(向前回滾n次) 表示①移動了HEAD的指向,將其指向上n個快照;②將HEAD移動后指向的快照回滾到暫存區(stage)
reset模式:
--hard HEAD~:移動了HEAD的指向,將其指向上一個快照;將HEAD移動后的指向的快照回滾到暫存區(stage);將暫存區域的文件還原到工作區
--soft HEAD~:移動了HEAD的指向,將其指向上一個快照
--mixed HEAD~:(默認也是--mixed)移動了HEAD的指向,將其指向上n個快照;將HEAD移動后指向的快照回滾到暫存區(stage)
git diff比較暫存區和工作區的不同文件,如果要比較工作區和倉庫的不同,可以用git diff HEAD 或者git diff <id>;比較暫存區和倉庫的不同,用git diff --cache <id>(<id>可以不用)
git branch查看所有分支
git merge合并分支的變更
刪除:本地 rm a.txt
stage區域:git rm a.txt (先手動刪除文件,然后使用git rm <file>和git add<file>效果是一樣的。)
倉庫: git commit -m
git checkout 命令加上 –b參數表示創建并切換,相當于如下2條命令
git branch dev
git checkout dev(切換到dev上面去)
切換后可以用git branch查看各分支,并且星號對應的是當前分支
查看分支:git branch
創建分支:git branch name
切換分支:git checkout name
創建+切換分支:git checkout –b name
合并某分支到當前分支:git merge name
刪除分支:git branch –d name
git add命令是個多功能命令,根據目標文件的狀態不同,此命令的效果也不同:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區,還能用于合并時把有沖突的文件標記為已解決狀態等。
我們需要用git add命令來跟蹤新文件,但如果使用git commit -am可以省略使用git add命令將已跟蹤文件放到暫存區的功能。
git push -u origin master表示把當前分支 master 推送到遠程。因為遠程庫是空的,所以我們在第一次推送 master 分支時,要加上 -u 參數,Git不但會把本地的 master 分支內容推送的遠程新的 master 分支,還會把本地的 master 分支和遠程的 master 分支關聯起來,在以后的推送或者拉取時就可以簡化命令(不加-u參數)。
git push <遠程主機名> <本地分支名>:<遠程分支名>
如果本地分支名與遠程分支名相同,則可以省略冒號:
git push <遠程主機名> <本地分支名>
git pull <遠程主機名> <遠程分支名>:<本地分支名>
git pull origin next:master 要取回origin主機的next分支,與本地的master分支合并。如果遠程分支(next)要與當前分支合并,則冒號后面的部分可以省略。寫成
git pull origin next
git fetch:相當于是從遠程獲取最新版本到本地,不會自動合并。git pull相當于在 fetch的基礎上增加了merge操作。
git tag顯示出所有的標簽
git tag -a v1.4 -m "my version 1.4" 添加附注級標簽
git tag v1.4lw 添加輕量級標簽
git show v1.4lw 展示相關信息
git tag -d v1.0 刪除標簽
git checkout v1.4 切換到1.4的標簽
將本地傳到遠程 git remote add origin https://10.21.155.251/hu-qs/BMS_6.git
git push -u origin master