發表文章

目前顯示的是有「Git」標籤的文章

同步 github/gitlab fork 出來的 repository

圖片
1.   沒有現成的可以一鍵同步的方法。 2.   最方便的是用 GitHub Desktop ,請看下面圖示 點選 merge 在 fetch 3.   另一種就是用 command line. # git remote -v # git remote add upstream git@GIT.AVER.COM:EDU/FW/m10v/linux.git # git fetch upstream # git checkout S510-2 # git merge upstream/S510-2 # git push origin S510-2 --tags   若 upstream 上有新的 branch # git checkout upstream/S510-3 # git checkout -b  S510-3 # git push origin S510-3 --tags PS: 加上 --tags 才會將 tag 也一併同步   Reference: https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/syncing-a-fork https://www.peterdavehello.org/2014/02/update_forked_repository/ https://gitbook.tw/chapters/github/syncing-a-fork.html  

git checkout fail " error: The following untracked working tree files would be overwritten by checkout: "

error: The following untracked working tree files would be overwritten by checkout: Remove all untracked files: git clean  -d  -fx . -x means ignored files are also removed as well as files unknown to git. -d means remove untracked directories in addition to untracked files. -f is required to force it to run. reference: https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-clean.html https://stackoverflow.com/questions/17404316/the-following-untracked-working-tree-files-would-be-overwritten-by-merge-but-i/35067275

使用 Git Mirror 無痛轉移 Git Server

使用 Git Mirror 無痛轉移 Git Server git clone mirror 選項,它可以把整個 repo 的資訊都 clone 下來,包括 branches, tags 再用 git push --mirror 把整包都丟到新的 git server 上面的 repo 裡。 Example     整包 clone 下來     1.                 git clone --mirror gitolite@git.lab317.org:dinos80152/Authentication     2.         到 gitlab 建一個空的 repo     3.         進到專案資料夾,設定新的遠端 git repo 位置             cd Authentication.git/             git remote set-url --push origin git@gitlab.lab317.org:dinos80152/Authentication.git     4.         local 更新 remote branch,因為是新的 repo,就是將本地的 origin/xxx 都刪囉。-p == --prune             git fetch -p origin     5.     ...

複製 git source code 到 新的 git server 並保持所有 commit

如果你想從 Git server 那裡複製一份源代碼到新的 Git server 上的話,可以通過以下步驟來操作。 1). 從原地址克隆一份裸版本庫,比如原本託管於 GitHub。     git clone --bare git://github.com/username/project.git 2). 然後到新的 Git 服務器上創建一個新項目,比如 GitCafe。 3). 以鏡像推送的方式上傳代碼到 GitCafe 服務器上。     cd project.git     git push --mirror git@gitcafe.com/username/newproject.git 4). 刪除本地代碼     cd ..     rm -rf project.git 5). 到新服務器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。     git clone git@gitcafe.com/username/newproject.git 這種方式可以保留原版本庫中的所有內容。

Git Autocomplete for Bash Shells

wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -O ~/.git-completion.bash 1.  Add this line to your ~/.bash_profile source ~/.git-completion.bash 2. In your terminal, type: source ~/.bash_profile

寫給大家的 Git 教學

寫給大家的 Git 教學 View more presentations from littlebtc

Git command list

Git 基本知識 由 project/.git/config 可知: (若有更多, 亦可由此得知) origin(remote) 是 Repository 的版本 master(branch) 是 local 端, 正在修改的版本 平常沒事不要去動到 origin, 如果動到, 可用 git reset --hard 回覆到沒修改的狀態. 我會用的 git command 1. git tag      git tag                                → 列出既有 tag      git tag -l "XX.*"                 → 搜尋XX.*     How to: Delete a remote Git tag         tag named '12345'         git tag -d 12345         git push origin :refs/tags/12345 2. git reset      git reset xxxx --hard         →  強制恢復到某一版本      git reset --soft HEAD^     →  執行 git commit,發現訊息寫錯想要修改,可以使用。                        ...

Git 的 public/private key 多台 PC 共用。

Git 的 public/private key 多台 PC 共用。 基本設定 # git config --global user.name "Joseph Lin" # git config --global user.email "joseph.lin@avermedia.com" 產生 public/private key # ssh-keygen –t rsa –C "joseph.lin@avermedia.com"                  // 然後一直按 Enter 會產生 id_rsa & id_rsa.pub -rw------- 1 root root 1675 2010-03-09 13:55 id_rsa -rw-r--r-- 1 root root 406 2010-03-09 13:55 id_rsa.pub 記得這兩個的權限為:600 & 644。 當有其他的 PC 要使用 git 時,可以重複上述步驟。然後將 id_rsa & id_rsa.pub 複製到 .ssh 目錄。 記得檔案權限要相同。 這樣應該就可以使用了。

GIT 使用

公司要求要做 version controll 很久了。 也導入了 GIT ,但嫌麻煩,一直沒用。不過,還是逃不了。 當然,它是很不錯的工具。會用是一件好事,可以增長見識。 不免俗的介紹一下何謂:GIT Git 是 Linus Torvalds 寫的, 也就是寫企鵝系統 Linux 的那個。 你可以看看他 介紹 Git 的影片。 裡面一直說用 Subversion 的人很笨,所以他聽起來有點沒水準。 世上的人不可能每個人都像他那麼聰明吧? Linux 的版本管理就是用 Git 的喔, 所以 Git 也很適合超大型的檔案版本管理。 Git 很快也很省空間。 它利用分散式的管理方法, 也就是說每個人下載的版本裡有包含有史以來更改過的紀錄。 沒有一個人的版本是主要的版本, 你喜歡把自己的版本怎麼改就怎麼改, 那你喜歡接受任何人的更改就接受人和人的更改。 這樣來說,不就天下大亂? Linus 說不會, 因為他只接收他信任的人的修改, 不會隨便去跟阿貓阿狗的程式碼合併。 而他信任的人也同樣的只會接受他們信任的人的修改, 依此類推。 GIT 功能太多,我也不想那麼瞭解。夠用就好。先貼一下 command 介紹。 $ git init # 開始用 Git 來管理 $ git add . # 把所有檔案加入 Git $ git commit -a # 做成一個版本 $ git commit -a -m "your message here" # commit 時直接寫訊息, 不用到下個螢幕上寫 $ git tag v0.02 # 本版別名取為 v0.02 $ git tag v0.03 40e3e # 把版本 40e3e 取名為 v0.03; $ git status # 查詢從上個版本到現在哪些檔案被修改 $ git diff # 查詢從上個版本到現在哪幾行被修改 $ git diff v0.01 v0.03 # 查詢兩個版本間的差異 $ git diff v0.01:story.txt v0.03:story.txt # 查詢兩個版本間某個檔案的差異 $ git log # 查詢...